/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.catraca.controlador;

import br.catraca.modelo.Aluno;
import br.catraca.modelo.Departamento;
import br.catraca.modelo.Funcionario;
import br.catraca.repositorio.Repositorio;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;

/**
 *
 * @author Henrique
 */


        
        
public class ControladorFuncionario {

    private Repositorio repositorio = new Repositorio();
    
    
    public void removerDoDept(HttpServletRequest request, String matricula){
        
        
        List <Funcionario> funcionarios = repositorio.listarTodosFuncionarios();
        Long mat = Long.parseLong(matricula);
        Funcionario funcionario = new Funcionario();
        String id_departamento = new String();
                    
        for (int index = 0; index < funcionarios.size(); index ++){
            if (funcionarios.get(index).getMatricula().equals(mat)){
               
                 funcionario.setMatricula(funcionarios.get(index).getMatricula());        
                 funcionario.setNome(funcionarios.get(index).getNome());
                 funcionario.setDepartamento(null);
                 
                repositorio.removerDoDept(funcionario); 
                
                id_departamento = Integer.toString(funcionarios.get(index).getDepartamento().getId());
                
                                  
                           
                break;
            }
        }
        
        funcionarios = repositorio.listarFuncionarioNoDepartamento (id_departamento);
        HttpSession secao = request.getSession();
        secao.setAttribute("funcionarios", funcionarios);
        
    }
    
    
    public void listarFuncionariosNulos(HttpServletRequest request){
        
        List <Funcionario> funcionario = repositorio.listarFuncionarioNulo();
        Funcionario func;
        HttpSession secao = request.getSession();
        
        if (funcionario.isEmpty()){
        func = new Funcionario();
        func.setNome("nulo");
        boolean status = funcionario.add(func);
        secao.setAttribute("func_nulo", funcionario);
        } else{
        secao.setAttribute("func_nulo", funcionario);
        }
        
    }
    
    public void associarFuncionario(HttpServletRequest request, String[] associados){
        
        HttpSession secao = request.getSession();
        
        String nomeDept = (String) secao.getAttribute("nomeDept");
        
        Departamento departamento = new Departamento();
        
        
        // Consulta o banco para saber se já existe departamento cadastrado com esse nome
         List <Departamento> Dept = repositorio.listarDepartamento(nomeDept);        
         /*Se não tiver nenhum departamento com o nome armazenado na variável nomeDept
          * então é setado um novo departamento com um novo nome
          */
        if (Dept.isEmpty()){
            
           departamento.setNome(nomeDept);
           repositorio.criarDepartamento(departamento);
        }
         
        
        
        departamento = repositorio.listarDepartamentoPorNome(nomeDept);
         
        List <Funcionario> funcionarios = new ArrayList<Funcionario>();
        
        for (int index = 0; index < associados.length; index++){
            
            funcionarios.add(repositorio.listarFuncionario(associados[index]));            
            
        }        
       
         for (int index = 0; index < funcionarios.size(); index++)          {
             
             funcionarios.get(index).setDepartamento(departamento);
             repositorio.associarFuncionario(funcionarios.get(index));
         }
                
        List<Departamento> departamentos = repositorio.listarDepartamentos();
        List<Funcionario> funcionariosNulo = repositorio.listarFuncionarioNulo();
        
        
        if (funcionariosNulo.isEmpty()){
        Funcionario func = new Funcionario(); 
        func.setNome("nulo"); 
        funcionariosNulo.add(func); 
                   
        }
         secao.setAttribute("departamentos", departamentos );
         secao.setAttribute("func_nulo", funcionariosNulo);
            
      
    }
    
    public String quantidadeDePessoasNoDepartamento(String id_departamento){
        
        List <Funcionario> contadorFuncionario =  repositorio.listarFuncionarioNoDepartamento(id_departamento);
        
        List <Aluno> contadorAluno = repositorio.listarAlunoNoDepartamento(id_departamento);
        
        int quantidade = contadorAluno.size() +contadorFuncionario.size();
        
        String quantidadeString = Integer.toString(quantidade);
        return quantidadeString;
        
        
        
    }
    
    
}
